

// 1. 用来进行：数据的存储
export const setStorage = (key,data) => {
  /** 
* @description 存储数据
* @param {*} 本地缓存中指定的 key
* @param {*} data 需要缓存的数据
*/
  // try{}catch{}: 用来 捕获存储时出现的异常
  try {
    wx.setStorageSync(key,data)
  } catch (error) {
    console.log('存储指定 ${key} 数据发送了异常',error);
  }
  
}


// 2. 用来进行：本地读取数据
/**
 * @description 从本地读取指定 key 的数据
 * @param {*} key
 */
export const getStorage = (key) => {
  // try {
  //   // 从本地读取数据：可能会成功，可能会失败 ；成功则接收给 变量value
  //   const value = wx.getStorageSync(key)
  //   if (value) {
  //     return value
  //   }
  // } catch (error) {
  //   console.error(`读取指定 ${key} 数据发生了异常`, error)
  // }
  try {
    const value = wx.getStorageSync(key)

    if (value) {
      return value
    }
  } catch (error) {
    console.error(`读取指定 ${key} 数据发生了异常`, error)
  }
}

//3.  用来进行： 从本地移除 指定key 的数据
/**
 * @description 从本地移除指定 key 的数据
 * @param {*} key
 */
export const removeStorag = (key)=>{
  try {
    wx.removeStorageSync(key)
  } catch (error) {
    console.error(`移除指定 ${key} 数据发生了异常`, error)
  }
}

// 4. 用来进行： 清楚本地存储的所有数据
/**
 * @description 从本地移除、清空全部的数据
 */
export const clearStorage = () => {
  try {
    wx.clearStorageSync()
  } catch (error) {
    console.error(`清除、清空数据发生了异常`, error)
  }
}

// --------------------------上面（同步操作） 下面（异步操作—）
// async ：表示声明是异步方法
// 5.  用来进行：异步存储 本地数据
/**
 * @description 异步将数据存储到本地
 * @param {*} key 本地缓存中指定的 key
 * @param {*} data 需要缓存的数据
 */
export const asyncSetStorage = (key,data)=>{
  // resolve:形参
  return new Promise((resolve)=>{
    // wx.setStorage(Object object):
    // 将数据存储在本地缓存指定的 key 中。会覆盖掉原来该 key 对应的内容。
    // key: 本地缓存中指定的 key
    // data: 需要存储的内容。
    // complete: 接口调用结束的回调函数（调用成功、失败都会执行）
    wx.setStorage({
      key,
      data,
      complete(res){
        // resolve: 把数据抛出去
        resolve(res)
      }
    })
  })
}

// 6.  用来进行： 异步读取本地数据
/**
 * @description 异步从本地获取指定 key 的数据
 * @param {*} key
 */
export const asyncGetStorage = (key)=>{
  return new Promise((resolve)=>{
    wx.getStorage({
      key,
      complete(res){
        resolve(res)
      }
    })
  })
}

// 7.  用来进行： 异步 移除指定 key 的本地数据
/**
 * @description 异步从本地移除指定 key 的数据
 * @param {*} key
 */
export const asyncRemoveStorage = (key) => {
  return new Promise((resolve) => {
    wx.removeStorage({
      key,
      complete(res) {
        resolve(res)
      }
    })
  })
}

// 7.  用来进行： 异步 移除 所有本地数据
/**
 * @description 异步从本地清除、移除全部缓存的数据
 */
export const asyncClearStorage = () => {
  return new Promise((resolve) => {
    wx.clearStorage({
      complete(res) {
        resolve(res)
      }
    })
  })
}